package com.bupt.liutong.admin.shop.bo;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.transaction.annotation.Transactional;

import com.bupt.liutong.admin.core.base.BaseBo;
import com.bupt.liutong.admin.shop.dao.ProdTypeDao;
import com.bupt.liutong.admin.shop.dto.ProdType;
import com.bupt.liutong.admin.shop.form.ProdTypeForm;
import com.bupt.liutong.util.BeanUtils;
import com.bupt.liutong.util.StringUtils;

public class ProdTypeBo extends BaseBo {

	private ProdTypeDao prodTypeDao;

	public List<ProdTypeForm> getProdTypesByPage(ProdTypeForm prodTypeForm,
			HttpServletRequest request) {
		ProdType prodType = new ProdType();
		sm.pagingWithNoCriteria(prodTypeForm, prodType,
				"shop_prod_type.getProdTypesCount");
		List<ProdType> prodTypes = prodTypeDao.getProdTypesByPage(prodType);
		return BeanUtils.dtoToForm(prodTypes, ProdTypeForm.class);
	}

	public List<ProdTypeForm> getAllProdTypes() {
		List<ProdType> list = prodTypeDao.getProdTypes(null);
		return BeanUtils.dtoToForm(list, ProdTypeForm.class);
	}

	public ProdTypeForm getProdTypeById(ProdTypeForm prodTypeForm) {
		ProdTypeForm resultForm = new ProdTypeForm();
		ProdType prodType = prodTypeDao.getProdTypeById(prodTypeForm.getId());
		BeanUtils.copyProperties(resultForm, prodType);
		return resultForm;
	}

//	public List<ProdTypeForm> getProdTypesByParentId(Integer parentId) {
//		List<ProdType> list = prodTypeDao.getProdTypesByParentId(parentId);
//		return BeanUtils.dtoToForm(list, ProdTypeForm.class);
//	}

	@Transactional
	public void insertProdType(ProdTypeForm prodTypeForm) {
		ProdType prodType = new ProdType();
		BeanUtils.copyProperties(prodType, prodTypeForm);
		if (!StringUtils.isEmpty(prodTypeForm.getParentIdStr())) {
			String[] parentIdStr = prodTypeForm.getParentIdStr().split(",");
			prodType.setParentId(Integer.parseInt(parentIdStr[0]));
			prodType.setTopParentId(Integer.parseInt(parentIdStr[1]));
		}
		prodTypeDao.insertProdType(prodType);
	}

	@Transactional
	public void updateProdType(ProdTypeForm prodTypeForm) {
		ProdType prodType = new ProdType();
		BeanUtils.copyProperties(prodType, prodTypeForm);
		if (!StringUtils.isEmpty(prodTypeForm.getParentIdStr())) {
			String[] parentIdStr = prodTypeForm.getParentIdStr().split(",");
			prodType.setParentId(Integer.parseInt(parentIdStr[0]));
			prodType.setTopParentId(Integer.parseInt(parentIdStr[1]));
		}
		prodTypeDao.updateProdType(prodType);
	}

	@Transactional
	public void deleteProdTypes(String[] ids) {
		if (ids != null) {
			for (int i = 0; i < ids.length; i++) {
				prodTypeDao.deleteProdType(Integer.parseInt(ids[i]));
			}
		}
	}

	public void setProdTypeDao(ProdTypeDao prodTypeDao) {
		this.prodTypeDao = prodTypeDao;
	}
}
